package ar.edu.utn.frba.disenio.filtros;

import java.util.ArrayList;
import java.util.List;

import ar.edu.utn.frba.disenio.Asiento;
import ar.edu.utn.frba.disenio.Vuelo;

public abstract class Filtro {
	
	private boolean obligatorio;
	
	public void filtrarVuelos(List<Vuelo> vuelos)
	{
		for(Vuelo vuelo : new ArrayList<Vuelo>(vuelos))
		{
			if(!this.esCumplidoPor(vuelo))
			{
				vuelos.remove(vuelo);
			}
		}
	}
	
	public boolean esCumplidoPor(Vuelo vuelo)
	{
		for(Asiento asiento : vuelo.getAsientos())
		{
			if(!this.esCumplidoPor(asiento))
			{
				return false;
			}
		}
		return true;
	}
	
	public abstract boolean esCumplidoPor(Asiento asiento);

	public boolean isObligatorio() {
		return this.obligatorio;
	}

	public void setObligatorio(boolean obligatorio) {
		this.obligatorio = obligatorio;
	}
	
}
